﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Itegracion.Framework.Forms;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.Data;

namespace Itegracion.Framework.Model
{
    public class User
    {
        public static List<Element> Traer(List<Element> entrada) {

            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                SELECT
                    u.nombreUsuario,
                    CASE
                        WHEN u.contrasena = @contrasena THEN ''
                        ELSE 'Contraseña Incorrecta'
                    END as contrasena,
                    u.nombres,
                    u.apellidos,
                    u.email,
                    u.telefonos,
                    e.id,
                    e.ruc,
                    e.nombre as empresa,
                    e.razonSocial,
                    CASE
                        WHEN u.activo = 1 THEN ''
                        ELSE 'Usuario Inactivo'
                    END as activo
                FROM
                    Usuario u
                    JOIN Empresa e ON u.idEmpresa = e.id
                WHERE
                    u.nombreUsuario = @nombreUsuario");
            db.AddInParameter(command, "nombreUsuario", System.Data.DbType.String, entrada[0].Value);
            db.AddInParameter(command, "contrasena", System.Data.DbType.String, entrada[1].Value);

            DataTable dt =  db.ExecuteDataSet(command).Tables[0];

            StringBuilder sb = new StringBuilder();
            if (dt.Rows.Count == 0)
                sb.Append("Usuario no Existe");
            else if (!string.IsNullOrEmpty(dt.Rows[0]["contrasena"] + ""))
                sb.Append(dt.Rows[0]["contrasena"] + "");
            else if (!string.IsNullOrEmpty(dt.Rows[0]["activo"] + ""))
                sb.Append(dt.Rows[0]["activo"] + "");

            rpta.Add(new Element("msj", sb.ToString()));
            rpta.Add(new Element("rpta", dt));

            return rpta;
        }
        public static List<Element> TraerMenu(List<Element> entrada)
        {

            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                SELECT
		            um.nombreUsuario,
		            m.id,
		            m.nombre,
		            m.idPadre,
		            f.ensamblado,
		            f.clase
	            FROM
		            UsuarioMenu um
		            JOIN Menu m ON um.idMenu = m.id
		            LEFT JOIN Formulario f ON m.idFormulario = f.id AND m.idEmpresa = f.idEmpresa
	            WHERE
		            um.nombreUsuario = @nombreUsuario
	            ORDER BY
		            m.idPadre, id");
            db.AddInParameter(command, "nombreUsuario", System.Data.DbType.String, entrada[0].Value);

            DataTable dt = db.ExecuteDataSet(command).Tables[0];
            rpta.Add(new Element("rpta", dt));

            return rpta;
        }
    }
}
